package datatime;

import com.sun.security.jgss.GSSUtil;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Calendar;

/**
 * 1、了解 LocalDate 中的常量:  MIN / MAX / EPOCH
 * 2、熟练使用 LocalDate 类中的 静态工厂方法 :  now() / of( int , int , int ) / ofYearDay( int , int )
 * 3、理解 LocalDate 内部设计:
 *          LocalDate 类是 final 修饰的 、
 *          LocalDate 类的构造方法都是私有的、
 *          LocalDate 类中表示 年、月、日的 实例变量全部都是 私有 且 不可更改的:
 *           private final int year ;
 *           private final short month ;
 *           private final short date ;
 *  4、LocalDate 类是一个最终类，同时 LocalDate 类的实例 也是不可变的
 */
public class LocalDateTest {

    public static void main(String[] args) {
        System.out.println(LocalDate.MIN);
        System.out.println(LocalDate.EPOCH);
        System.out.println(LocalDate.MAX);

        System.out.println("*******************************");

        LocalDate today = LocalDate.now();
        System.out.println( today );

        //这里的月份从一开始
        LocalDate birthday1 = LocalDate.of( 1997 , 7 , 11);
        System.out.println( birthday1 );

        LocalDate birthday2 = LocalDate.of( 1997 , 7 , 11);
        System.out.println( birthday2 );

        System.out.println( birthday1 == birthday2 );//false
        System.out.println( birthday1.equals(birthday2) );//true

        System.out.println("*******************************");

        System.out.println( today.plusDays( 15 ) );//增加 N 天
        System.out.println( today.plusWeeks( 3 ) );//增加 N 周
        System.out.println( today.plusMonths( 2 ) );
        System.out.println( today.plusYears( -10 ) );

        System.out.println("*******************************");

        LocalDate date = LocalDate.ofYearDay( 2020 , 200 );//获取 指定年份 的 第 N 天对应的 日期
        System.out.println( date );
        System.out.println( date.isLeapYear() );// 判断 指定日期 所在年份是否是闰年
        System.out.println( date.lengthOfMonth() ); // 获取 当前日期 所在月份的总天数
        System.out.println( date.lengthOfYear() ); // 获取 当前日期 所在年份的总天数

    }
}
